package com.qf.param.DTO;

import lombok.Data;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.constraints.*;
import java.math.BigDecimal;

/**
 * @Author Ayases
 * @Date 2025/6/12 15:15
 * @Desc
 */

/**
 * 商品更新数据传输对象
 * 注意：图片更新策略 - 如果上传新图片则覆盖旧图片，不传则保留原图片
 */
@Data
public class ProductUpdateDTO {
    @NotBlank(message = "商品ID不能为空")
    private String id;  // 商品唯一标识（UUID）

    @Size(max = 64, message = "货号长度不能超过64个字符")
    private String sku;  // 货号（可选更新）

    @Size(max = 255, message = "商品名称长度不能超过255个字符")
    private String name;  // 商品名称（可选更新）

    @DecimalMin(value = "0.01", message = "商品价格必须大于0")
    @Digits(integer = 8, fraction = 2, message = "商品价格格式无效")
    private BigDecimal price;  // 商品价格（可选更新）

    @Size(max = 100, message = "商品分类长度不能超过100个字符")
    private String category;  // 商品分类（可选更新）

    @Size(max = 2000, message = "商品描述长度不能超过2000个字符")
    private String description;  // 商品描述（可选更新）

    @Size(max = 5, message = "最多上传5张图片")
    private MultipartFile[] imageUrls;  // 新图片数组（空数组=删除所有图片，null=不更新图片）

    @Min(value = 0, message = "库存数量不能小于0")
    private Integer stock;  // 库存数量（可选更新）

    @Min(value = 1, message = "商品状态值无效（1=上架, 2=下架）")
    @Max(value = 2, message = "商品状态值无效（1=上架, 2=下架）")
    private Integer status;  // 状态（1上架 2下架）（可选更新）
}
